package com.dl.mall.mapper;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dl.mall.entity.admin.Admin;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 管理员操作类
 * @author DL
 * @create 2022-01-17 14:48
 */
@Mapper
public interface AdminMapper {

    /**
     * 添加管理员
     * @param jsonObject
     * @return
     */
    int insertAdmin(JSONObject jsonObject);

    /**
     * 根据 用户id 删除角色
     * @param userId 永用户id
     * @return 结果
     */
    int deleteAdminRoleById(String userId);

    /**
     * 插入用户角色
     * @param userId 用户id
     * @param roleIdList 角色集合
     * @return 结果
     */
    int insertAdminRole(@Param("userId") String userId, @Param("roleIdList") JSONArray roleIdList);

    /**
     * 更新 管理员 账号状态
     * @param userId
     * @param state
     * @return
     */
    int updateAdminState(@Param("userId") String userId, @Param("state") Integer state);

    /**
     * 更新 管理员 信息
     * @param userId
     * @return
     */
    int updateAdminInfo(JSONObject jsonObject);

    /**
     * 重置密码
     * @param userId
     * @param password
     * @return
     */
    int updateAdminPasswordByReset(@Param("userId") String userId, @Param("password") String password);

    /**
     * 更新密码
     * @param userId
     * @param password
     * @return
     */
    int updateAdminPassword(@Param("userId") String userId, @Param("password") String password);

    /**
     * 登陆和查重
     * @param username 用户名
     * @return 用户信息
     */
    Admin queryAdminByUsername(@Param("username")String username);


    Admin queryAdminInfoById(String userId);

    /**
     * 根据 用户id 查询用户角色
     * 每次路由触发
     * @param userId 用户id
     * @return 用户信息
     */
    Map<String, String> queryRoleById(String userId);


    /**
     * 根据 条件 查询管理员列表
     * @param condition 条件
     * @return 用户分页
     */
    List<Admin> queryAdminByCondition(JSONObject condition);


}
